<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: DHCPv4</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">lwIP
   &#160;<span id="projectnumber">2.1.2</span>
   </div>
   <div id="projectbrief">Lightweight IP stack</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__dhcp4.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">DHCPv4<div class="ingroups"><a class="el" href="group__api.html">APIs</a> &raquo; <a class="el" href="group__callbackstyle__api.html">&quot;raw&quot; APIs</a> &raquo; <a class="el" href="group__ip.html">IP</a> &raquo; <a class="el" href="group__ip4.html">IPv4</a></div></div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga43812097832716a462c660eb59cc1bf8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#ga43812097832716a462c660eb59cc1bf8">dhcp_set_struct</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, struct dhcp *dhcp)</td></tr>
<tr class="separator:ga43812097832716a462c660eb59cc1bf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga292a1b0c0c288ec508108a3fba473e64"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#ga292a1b0c0c288ec508108a3fba473e64">dhcp_cleanup</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga292a1b0c0c288ec508108a3fba473e64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0c50968d9811aa2aa67fadc0885d744f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#ga0c50968d9811aa2aa67fadc0885d744f">dhcp_start</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga0c50968d9811aa2aa67fadc0885d744f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabd7fcc7e0799e313885fc7fd9d4992ad"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#gabd7fcc7e0799e313885fc7fd9d4992ad">dhcp_inform</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gabd7fcc7e0799e313885fc7fd9d4992ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga583eb8d58f5e96b7dea717948578a947"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#ga583eb8d58f5e96b7dea717948578a947">dhcp_renew</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga583eb8d58f5e96b7dea717948578a947"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf7cd42b9f220446b6a597d3474da6ece"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#gaf7cd42b9f220446b6a597d3474da6ece">dhcp_release_and_stop</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gaf7cd42b9f220446b6a597d3474da6ece"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf92f7afb58252f82a749064602974bd4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#gaf92f7afb58252f82a749064602974bd4">dhcp_release</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gaf92f7afb58252f82a749064602974bd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga93f6bf21086dc9b10c0bec4676f97312"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#ga93f6bf21086dc9b10c0bec4676f97312">dhcp_stop</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga93f6bf21086dc9b10c0bec4676f97312"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>DHCP (IPv4) related functions This is a DHCP client for the lwIP TCP/IP stack. It aims to conform with RFC 2131 and RFC 2132.</p>
<p>Options: <a class="el" href="dhcp_8h.html#a3751cc5daa0875d415ebacd8ad675f1e">DHCP_COARSE_TIMER_SECS</a> (recommended 60 which is a minute) <a class="el" href="dhcp_8h.html#a7a26209f52eebe8ded457ae141df403f">DHCP_FINE_TIMER_MSECS</a> (recommended 500 which equals TCP coarse timer)</p>
<p><a class="el" href="group__dhcp4.html#ga0c50968d9811aa2aa67fadc0885d744f">dhcp_start()</a> starts a DHCP client instance which configures the interface by obtaining an IP address lease and maintaining it.</p>
<p>Use <a class="el" href="group__dhcp4.html#gaf92f7afb58252f82a749064602974bd4">dhcp_release()</a> to end the lease and use <a class="el" href="group__dhcp4.html#ga93f6bf21086dc9b10c0bec4676f97312">dhcp_stop()</a> to remove the DHCP client.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__lwip__opts__hooks.html#ga40e6c9aba06e66e5df1b4ca18329f9b4">LWIP_HOOK_DHCP_APPEND_OPTIONS</a> </dd>
<dd>
<a class="el" href="group__lwip__opts__hooks.html#gafbbbc574863c0f88988936bd1434f2d2">LWIP_HOOK_DHCP_PARSE_OPTION</a></dd>
<dd>
<a class="el" href="group__netifapi__dhcp4.html">DHCPv4</a> </dd></dl>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga292a1b0c0c288ec508108a3fba473e64"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga292a1b0c0c288ec508108a3fba473e64">&#9670;&nbsp;</a></span>dhcp_cleanup()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dhcp_cleanup </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
          <td class="paramname"><em>netif</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Removes a struct dhcp from a netif.</p>
<p>ATTENTION: Only use this when not using <a class="el" href="group__dhcp4.html#ga43812097832716a462c660eb59cc1bf8">dhcp_set_struct()</a> to allocate the struct dhcp since the memory is passed back to the heap.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">netif</td><td>the netif from which to remove the struct dhcp </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="gabd7fcc7e0799e313885fc7fd9d4992ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabd7fcc7e0799e313885fc7fd9d4992ad">&#9670;&nbsp;</a></span>dhcp_inform()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dhcp_inform </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
          <td class="paramname"><em>netif</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Inform a DHCP server of our manual configuration.</p>
<p>This informs DHCP servers of our fixed IP address configuration by sending an INFORM message. It does not involve DHCP address configuration, it is just here to be nice to the network.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">netif</td><td>The lwIP network interface </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="gaf92f7afb58252f82a749064602974bd4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf92f7afb58252f82a749064602974bd4">&#9670;&nbsp;</a></span>dhcp_release()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> dhcp_release </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
          <td class="paramname"><em>netif</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function calls <a class="el" href="group__dhcp4.html#gaf7cd42b9f220446b6a597d3474da6ece">dhcp_release_and_stop()</a> internally. </p><dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>Use <a class="el" href="group__dhcp4.html#gaf7cd42b9f220446b6a597d3474da6ece">dhcp_release_and_stop()</a> instead. </dd></dl>

</div>
</div>
<a id="gaf7cd42b9f220446b6a597d3474da6ece"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf7cd42b9f220446b6a597d3474da6ece">&#9670;&nbsp;</a></span>dhcp_release_and_stop()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dhcp_release_and_stop </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
          <td class="paramname"><em>netif</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Release a DHCP lease and stop DHCP statemachine (and AUTOIP if LWIP_DHCP_AUTOIP_COOP).</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">netif</td><td>network interface </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga583eb8d58f5e96b7dea717948578a947"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga583eb8d58f5e96b7dea717948578a947">&#9670;&nbsp;</a></span>dhcp_renew()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> dhcp_renew </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
          <td class="paramname"><em>netif</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Renew an existing DHCP lease at the involved DHCP server.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">netif</td><td>network interface which must renew its lease </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga43812097832716a462c660eb59cc1bf8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga43812097832716a462c660eb59cc1bf8">&#9670;&nbsp;</a></span>dhcp_set_struct()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dhcp_set_struct </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
          <td class="paramname"><em>netif</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct dhcp *&#160;</td>
          <td class="paramname"><em>dhcp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Set a statically allocated struct dhcp to work with. Using this prevents dhcp_start to allocate it using mem_malloc.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">netif</td><td>the netif for which to set the struct dhcp </td></tr>
    <tr><td class="paramname">dhcp</td><td>(uninitialised) dhcp struct allocated by the application </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga0c50968d9811aa2aa67fadc0885d744f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0c50968d9811aa2aa67fadc0885d744f">&#9670;&nbsp;</a></span>dhcp_start()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> dhcp_start </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
          <td class="paramname"><em>netif</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Start DHCP negotiation for a network interface.</p>
<p>If no DHCP client instance was attached to this interface, a new client is created first. If a DHCP client instance was already present, it restarts negotiation.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">netif</td><td>The lwIP network interface </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>lwIP error code<ul>
<li>ERR_OK - No error</li>
<li>ERR_MEM - Out of memory </li>
</ul>
</dd></dl>

</div>
</div>
<a id="ga93f6bf21086dc9b10c0bec4676f97312"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga93f6bf21086dc9b10c0bec4676f97312">&#9670;&nbsp;</a></span>dhcp_stop()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dhcp_stop </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
          <td class="paramname"><em>netif</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function calls <a class="el" href="group__dhcp4.html#gaf7cd42b9f220446b6a597d3474da6ece">dhcp_release_and_stop()</a> internally. </p><dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated:</a></b></dt><dd>Use <a class="el" href="group__dhcp4.html#gaf7cd42b9f220446b6a597d3474da6ece">dhcp_release_and_stop()</a> instead. </dd></dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>
